// prefetcher.h
#ifndef __PREFETCHER_H
#define __PREFETCHER_H

#define MAX_HISTORY_SIZE 8 // 对应设计图中的 array[8]
#define DETECTION_THRESHOLD 3 // 连续N次步长相同则上报
#define TIME_WINDOW_NS (50 * 1000 * 1000) // 50毫秒的时间窗口

// 对应设计图中的 PatternInfo，即通过 Ring Buffer 传输的事件
struct event {
    __u32 pid;
    long stride;
    unsigned long fault_addr;
};

// 对应设计图中的 AccessHistory
struct access_history {
    unsigned long addresses[MAX_HISTORY_SIZE];
    __u64 timestamps[MAX_HISTORY_SIZE];
    long last_stride;
    __u32 stable_count;
    __u32 current_idx;
};

#endif /* __PREFETCHER_H */